package com.atguigu.bigdata.spark.core.wc

import org.apache.spark.rdd.RDD
import org.apache.spark.{SparkConf, SparkContext}

/**
  * create by undeRdoG on  2021-06-06  14:54
  * 凡心所向，素履以往，生如逆旅，一苇以航。
  */
object Spark01_WordCount {

  def main(args: Array[String]): Unit = {

    //  建立和spark的连接
    val sparkConf = new SparkConf().setMaster("local").setAppName("WordCount")
    val sc = new SparkContext(sparkConf)

    // 业务操作
    //1. 读取文件  获取每行的数据
    val lines: RDD[String] = sc.textFile("datas")

    // 2. 将每行数据拆分
    val words: RDD[String] = lines.flatMap(_.split(" "))
    // 3. 将数据单词进行分组，便于统计  （hello,hello,hello）
    val wordGroup: RDD[(String, Iterable[String])] = words.groupBy(word => word)
    // 4. 对分组后的数据进行统计

    val wordTocount: RDD[(String, Int)] = wordGroup.map({
      case (word, list) => {
        (word, list.size)
      }
    })

    // 5. 将转换结果采集到控制台
    val array: Array[(String, Int)] = wordTocount.collect()

    array.foreach(println)
    // 关闭连接
    sc.stop()
  }
}
